

class Test {
    public static void main(String[] args) {
	if (args.length == 0) {
	    System.out.println("please type some test data on the command line");
	    System.exit(1);
	}
	List list = new LinkedList();
	//	java.util.List list = new java.util.LinkedList();

	System.out.println("testing add");
	for (int i = 0; i < args.length; i++)
	    list.add(args[i]);

	System.out.println("testing size/isEmpty");
	check (list.size() == args.length);
	check (list.isEmpty() == (args.length == 0));

	System.out.println("testing get");
	for (int i = 0; i < args.length; i++)
	    check (list.get(i).equals(args[i]));

	System.out.println("testing contains");
	for (int i = 0; i < args.length; i++)
	    check (list.contains(args[i]));

	System.out.println("testing set");
	for (int i = 0; i < args.length; i++)
	    list.set(i, args[ args.length - i - 1 ]);

	System.out.println("testing get");
	for (int i = 0; i < args.length; i++)
	    check (list.get(i).equals(args[ args.length - i - 1 ]));

	System.out.println("testing contains");
	for (int i = 0; i < args.length; i++)
	    check (list.contains(args[i]));

	System.out.println("testing remove");
	for (int i = 0; i < args.length; i++)
	    check (list.remove(args[i]));

	System.out.println("testing size/isEmpty");
	check (list.size() == 0);
	check (list.isEmpty());

	System.out.println("testing contains");
	for (int i = 0; i < args.length; i++)
	    check (!list.contains(args[i]));

	System.out.println("testing add");
	for (int i = 0; i < args.length; i++)
	    list.add(args[i]);

	System.out.println("testing iterator");
	Iterator it = list.iterator();
	//	java.util.Iterator it = list.iterator();
	for (int i = 0; i < args.length; i++) {
	    check (it.hasNext());
	    check (it.next().equals(args[i]));
	}

	check (!it.hasNext());

	System.out.println("Tests Succeeded!");
    }
    static void check (boolean test) {
	if (!test) {
	    System.out.println("FAILED");
	    System.exit(1);
	}
    }
}

